
/**
 * 
 */
package com.zsrt.utils;


/**
 * @author jmj
 * @date 2017年4月10日
 * @time 上午11:32:45
 */
public class ArrayUtil {
	/**
	 * 交换位置
	 * @param arrays
	 * @param i
	 * @param j
	 */
	public static void changePosition(int[] arrays,int i,int j){
		int temp = arrays[j];
		arrays[j]= arrays[i];
		arrays[i]= temp;
	}
	/**
	 * 打印整型数组
	 * @param array
	 */
	public static void printArray(int[] array){
		System.out.print("[");
		for(int i =0;i<array.length;i++){
			if(i==array.length-1){
				System.out.print(array[i]);
			}else{
				System.out.print(array[i]+",");
			}
		}
		System.out.println("]");
	}
	
	/**
	 * 打印字符串数组
	 * @param array
	 */
	public static void printArray(String[] array){
		System.out.print("[");
		for(int i =0;i<array.length;i++){
			if(i==array.length-1){
				System.out.print(array[i]);
			}else{
				System.out.print(array[i]+",");
			}
		}
		System.out.println("]");
	}
	
	
	/**
	 * 打印数组
	 * @param jgs
	 */
	public static void StudentEntity(Object[] jgs){
		System.out.print("[");
		for(int i =0;i<jgs.length;i++){
			if(i==jgs.length-1){
				System.out.print(jgs[i]);
			}else{
				System.out.print(jgs[i]+",");
			}
		}
		System.out.println("]");
	}
	
	
	
	
	/**
	 * 快速排序
	 * 调用此方法时，需在调用后面加入输出
	 * @param arrays  待排序列
	 * @param begin  数组的第一个下标
	 * @param end    数组的最后一个下标
	 */
	public static void quickSort(int[] arrays,int begin,int end){
		int i = begin;
		int j = end;
		
		if(begin>=end){
			//结束整个方法
			//System.out.println("结束方法。不用排序...");
			return;
		}
		
		int key = arrays[i];
		
		//打印begin和end
		//System.out.println("begin="+begin+"end="+end);
		//ArrayUtil.printArray(arrays);
		//System.out.println();
		
		
		while(true){
			//System.out.println("进入循环");
			//从右往左循环
			while(j>i){
				if(arrays[j]<key){
					ArrayUtil.changePosition(arrays, i,j);
					break;
				}else{
					j--;
				}
			}
			//从左往右循环
			while(i<j){
				if(arrays[i]>key){
					ArrayUtil.changePosition(arrays, i, j);
					break;
				}else{
					i++;
				}
			}
			
			//结束一趟循环
			if(i==j){
				break;
			}
			
		    
		}
		
		//System.out.println(i);
		//递归左边
		quickSort(arrays,begin,i-1);
		//递归右边
	    quickSort(arrays,i+1,end);
	}
   

}
